{#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#}

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

{% if rabbitmq_installed %}
---
spring:
  rabbitmq:
   addresses: {{spring_rabbitmq_addresses}}
   username: {{spring_rabbitmq_username}}
   password: {{spring_rabbitmq_password}}
   virtual_host: /
   useSSL: false
   sslProperties:
{% endif %}

{% if kafka_installed %}
---
spring:
  cloud:
    stream:
      kafka:
        binder:
          brokers: {{spring_cloud_stream_kafka_binder_brokers}}
          zkNodes: {{spring_cloud_stream_kafka_binder_zknodes}}
{% if security_enabled %}
          configuration:
            security:
              protocol: SASL_PLAINTEXT
{% endif %}
{% endif %}

{% if h2_installed %}
---
spring:
  datasource:
    url: jdbc:h2:tcp://{{h2_server}}:{{h2_port}}/dataflow
    username: sa
    password:
    driverClassName: org.h2.Driver
{% endif %}

{% if collector_installed and collector_enabled %}
---
spring:
  cloud:
    dataflow:
      metrics:
        collector:
          uri: http://{{collector_server}}:{{collector_port}}
    stream:
      bindings:
        applicationMetrics:
          destination: {{collector_channel}}
{% endif %}
---
dataflow:
  uri: {{scdf_shell_server_address}}
spring:
  hadoop:
    fsUri: {{fs_defaultfs}}
{% if yarn_installed %}
    resourceManagerAddress: {{yarn_rm_address}}
    resourceManagerHost: {{yarn_rm_address_host}}
    resourceManagerPort: {{yarn_rm_address_port}}
    resourceManagerSchedulerAddress: {{yarn_rm_scheduler_address}}
    jobHistoryAddress: {{job_history_address}}
    yarnApplicationClasspath: {{yarn_app_classpath}}
{% endif %}
{% if security_enabled %}
    security:
      userPrincipal: {{user_principal_name}}
      userKeytab: {{user_keytab}}
      authMethod: kerberos
      namenodePrincipal: {{nn_principal_name}}
      rmManagerPrincipal: {{rm_principal_name}}
      jobHistoryPrincipal: {{jhs_principal_name}}
{% endif %}
    config:
      yarn.resourcemanager.scheduler.address: {{yarn_rm_scheduler_address}}
      mapreduce.application.framework.path: /{{stack_name}}/apps/{{stack_version}}/mapreduce/mapreduce.tar.gz#mr-framework
      mapreduce.application.classpath: {{mr_app_classpath}}
{% if dfs_ha_enabled %}
      dfs.ha.automatic-failover.enabled: {{dfs_ha_automatic_failover_enabled}}
      dfs.nameservices: {{dfs_ha_nameservices}}
      dfs.client.failover.proxy.provider.{{dfs_ha_nameservices}}: org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
      dfs.ha.namenodes.{{dfs_ha_nameservices}}: {{dfs_ha_namenode_ids}}
{% for key, value in dfs_ha_map.iteritems() %}
      dfs.namenode.rpc-address.{{dfs_ha_nameservices}}.{{key}}: {{value}}
{% endfor %}
{% endif %}

---
{% for key, value in configurations|dictsort if value|length > 1 %}
{{key}} : {{ escape_yaml_property(value) }}
{% endfor %}

